#pragma once

#include<iostream>
#include<fstream>
#include<string>
#include<unordered_map>
#include"Log.hpp"

extern Log lg;
const std::string dictname = "./dict.txt";
const std::string step = ":";

//对文本中读取到的一行数据进行分割
static bool split(std::string& line, std::string& part1, std::string& part2)
{
    auto pos = line.find(step);
    if(pos == std::string::npos) return false;
    part1 =  line.substr(0, pos);
    part2 = line.substr(pos+1);

}

class Init
{
public:
    Init()
    {
        std::ifstream in(dictname);
        if(!in.is_open())
        {
            lg(Fatal, "ifstream open %s error", dictname.c_str());
            exit(0);
        }

        std::string line;
        while (std::getline(in, line))
        {
            std::string part1, part2;
            split(line, part1, part2);
            //对分割好的数据，以k-val的形式存入hash表中
            dict.insert({part1, part2});
        }
        in.close();
        
    }
    std::string tranlatin(std::string key)
    {
        auto iter = dict.find(key);
        if(iter == dict.end()) return "Unknow";
        else return iter->second;
    }
private:
    std::unordered_map<std::string, std::string> dict;
};